package com.liuwei.consultant.aiservice;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;
import reactor.core.publisher.Flux;

@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT, // 手动装配
        chatModel = "openAiChatModel", // 指定模型
        streamingChatModel = "openAiStreamingChatModel",  // 流式调用返回模式
        //chatMemory = "chatMemory" // 配置会话记忆对象
        chatMemoryProvider = "chatMemoryProvider", // 配置会话记忆提供者对象
        contentRetriever = "contentRetriever", // 配置向量数据库检索对象
        tools = "reservationTool"  // 配置tools方法
)
// @AiService 自动装配
public interface ConsultantService {

    // 用于聊天的方法
    //public String chat(String message);

    // 流式调用
    //@SystemMessage("你是AI志愿填报助手，帮助考生填表高考志愿")  // 设置助手role
    @SystemMessage(fromResource = "system.txt")
    //@UserMessage("你是刘威先生提供的专业的AI志愿填报顾问。{{it}}")
    //@UserMessage("你是刘威先生提供的专业的AI志愿填报顾问。{!{msg}}")
    public Flux<String> chat(/*@V("msg")*/ @MemoryId String memoryId,@UserMessage String message);
}
